//package hasthi.actuators.impl;
//import java.util.List;
//import java.util.Random;
//import java.util.concurrent.ConcurrentLinkedQueue;
//
//import hasthi.actuators.*;
//import hasthi.common.HasthiException;
//
//public class WaitingActionScheduler extends SystemActionsScheduler{
//    private static Random r = new Random();
//    protected ConcurrentLinkedQueue<ManagementAction> queue = new ConcurrentLinkedQueue<ManagementAction>();
//    
//    public WaitingActionScheduler(){
//        new Thread(new Runnable() {
//            public void run() {
//                while (true) {
//                    try {
//                        int waitingCount = count.intValue();
//                        
//                        if (waitingCount > 20) {
//                            if(waitingCount > 1000){
//                                log.info(waitingCount + " Messages waiting to be processed ");
//                            }
//                            triggerBatchRemove(10);
//                        } else if (waitingCount > 0) {
//                            triggerBatchRemove(10);
//                            Thread.sleep(5000);
//                        } else {
//                            Thread.sleep(5000);
//                        }
//                    } catch (Exception e) {
//                        e.printStackTrace();
//                    }
//                }
//
//            }
//
//        }).start();
//    }
//    
//    
//    @Override
//    public void invoke(ManagementAction action) throws HasthiException {
//        try {
//            Thread.sleep(1000*r.nextInt(30));
//            if(action instanceof CreateServiceAction){
//                ((CreateServiceAction)action).setNewServiceUrl("http://localhost:"+action.hashCode());
//            }
//        } catch (InterruptedException e) {
//            throw new HasthiException(e,HasthiException.FaultCode.LocalError);
//        }
//        
//    }
//    
//    public void planAndExecuate() throws HasthiException{
//        List<ManagementAction> plannedActions = actionContext.getPlanner().planActions(actions);
//        //System.out.println("Actions "+plannedActions);
//        for(ManagementAction action:plannedActions){
//                
//        }
//        actions.clear();
//    }
//
//}
